package com.qf.medicaldoctoradmin.healthMonitor.details.controller;

import com.qf.common.common.R;
import com.qf.common.entity.Monitor;
import com.qf.common.entity.MonitorRule;
import com.qf.medicaldoctoradmin.healthMonitor.details.service.DetailsService;
import com.qf.medicaldoctoradmin.healthMonitor.details.vo.DetailsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Api(tags = "健康检测数据详情API")
@RestController
@CrossOrigin
@RequestMapping("/health/details")
public class DetailsController {
    @Resource
    private DetailsService detailsService;

    @ApiOperation(value = "获取用户所有数据记录集合", notes = "获取用户所有类型的健康数据记录集合，是一个包含完整体重/心率/血压等数据信息的对象集合，可循环遍历取出同类型数据来进行显示")
    @GetMapping("/getDetails")
    public R getDetails() {
        List<Monitor> monitors = detailsService.getDetails();
        return R.ok(monitors);
    }

    @ApiOperation(value = "添加用户数据记录", notes = "添加用户健康数据记录，可添加单个体重/心率/血压数据，未添加的数据保持和最新的数据相同")
    @PostMapping("/insert")
    public R insert(@RequestBody Monitor monitor) {
        detailsService.insert(monitor);
        return R.ok("添加成功");
    }

    @ApiOperation(value = "查询签约医生", notes = "查询可以签约的医生信息，根据登录用户的id查询，按照原型图只显示一条医生的信息，可供签约；具体的确定签约需要签约模块的接口，为保证签约信息一致性，需要在前端调用签约模块ajax")
    @GetMapping("/getDoctor")
    public R getDoctor() {
        DetailsVO doctor = detailsService.getDoctor();
        return R.ok(doctor);
    }

    @ApiOperation(value = "获取健康规则数据", notes = "获取最新的健康规则数据，用于判断用户提交的数据是否符合健康规则")
    @GetMapping("/getRule")
    public R getRule() {
        List<MonitorRule> rule = detailsService.getRule();
        return R.ok(rule);
    }


    @ApiOperation(value = "根据健康规则判断用户健康数据的状态", notes = "根据健康规则，判断健康检测页需要展示的健康数据的状态，内页面的数据记录状态不再判断，提供状态类型有体重/血糖/血压/心率等")
    @PostMapping("/chargeByRule")
    public R chargeByRule() {
        Map<String, String> monitorStateMap = detailsService.chargeByRule();
        return R.ok(monitorStateMap);
    }

}
